package com.yssoft.controller.core;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import com.alibaba.fastjson.JSONArray;
import com.yssoft.controller.BaseController;
import com.yssoft.entity.core.TProductClassify;
import com.yssoft.service.core.ProductClassifyService;

/**
 * @类名称: ProductClassifyController
 * @类描述: 产品类别控制器
 * @作者:洪丰
 * @创建时间:2018年4月28日 上午11:43:06
 */
@Controller
@RequestMapping(value = "/productClassify")
public class ProductClassifyController extends BaseController
{
	@Autowired
	private ProductClassifyService productClassifyService;

	/**
	 * @方法名称: list
	 * @功能描述: 跳转到列表页
	 * @作者:洪丰
	 * @创建时间:2018年4月24日 下午1:05:00
	 * @return String
	 */
	@RequestMapping(value = "/list")
	public String list(Model model){
		model.addAttribute("json",JSONArray.toJSON(productClassifyService.queryAllProClaTableTree()));
		return "core/productClassify/productClassifyList";
	}

	/**
	 * @方法名称: add
	 * @功能描述: 跳转到新增页面
	 * @作者: 洪丰
	 * @创建时间: 2018年4月28日 下午2:13:48
	 * @param model
	 * @return String
	 */
	@RequestMapping(value = "create", method = RequestMethod.GET)
	public String add(Model model) {
		model.addAttribute("action", "save");
		model.addAttribute("entity", new TProductClassify());
		return "core/productClassify/productClassifyForm";
	}
	
	/**
	 * @方法名称: save
	 * @功能描述: 保存商品类别
	 * @作者:洪丰
	 * @创建时间:2018年4月24日 下午1:06:05
	 * @param entity
	 * @param redirectAttributes
	 * @return String
	 */
	@RequestMapping(value = "save")
	public String save(TProductClassify entity, RedirectAttributes redirectAttributes) {
		try {
			productClassifyService.addAcc(entity);
			redirectAttributes.addFlashAttribute("message", "保存成功!");
		} catch (Exception e) {
			e.printStackTrace();
			redirectAttributes.addFlashAttribute("message", "保存失败!");
		}
		return "redirect:list";
	}
	
	/**
	 * @方法名称: update
	 * @功能描述: 跳转到修改页面
	 * @作者:洪丰
	 * @创建时间:2018年4月24日 下午1:31:53
	 * @param id
	 * @param model
	 * @return String
	 */
	@RequestMapping(value = "update/{id}", method = RequestMethod.GET)
	public String update(@PathVariable("id") Integer id, Model model) {
		TProductClassify entity = this.productClassifyService.queryRoleById(id);
		if(null != entity.gettPorCla()){
			TProductClassify personEntity = this.productClassifyService.queryRoleById(entity.gettPorCla());
			model.addAttribute("personEntity", personEntity);
		}
		model.addAttribute("action", "update");
		model.addAttribute("entity", entity);

		return "core/productClassify/productClassifyForm";
	}
	
	/**
	 * @方法名称: view
	 * @功能描述: 查看详细
	 * @作者:洪丰
	 * @创建时间:2018年4月25日 下午2:28:34
	 * @param id
	 * @param model
	 * @return String
	 */
	@RequestMapping(value = "view/{id}", method = RequestMethod.GET)
	public String view(@PathVariable("id") Integer id, Model model) {
		TProductClassify entity = this.productClassifyService.queryRoleById(id);
		if(null != entity.gettPorCla()){
			TProductClassify personEntity = this.productClassifyService.queryRoleById(entity.gettPorCla());
			model.addAttribute("personEntity", personEntity);
		}
		model.addAttribute("entity", entity);
		return "core/productClassify/productClassifyView";
	}
	
	/**
	 * @方法名称: update
	 * @功能描述: 修改产品类别
	 * @作者:洪丰
	 * @创建时间:2018年4月24日 下午1:38:11
	 * @param entity
	 * @param redirectAttributes
	 * @return String
	 */
	@RequestMapping(value = "update")
	public String update(TProductClassify entity, RedirectAttributes redirectAttributes) {
		try {
			productClassifyService.editAcc(entity);
			redirectAttributes.addFlashAttribute("message", "保存成功!");
		} catch (Exception e) {
			e.printStackTrace();
			redirectAttributes.addFlashAttribute("message", "保存失败!");
		}
		return "redirect:list";
	}
	
	/**
	 * @方法名称: delete
	 * @功能描述: 删除权限
	 * @作者:洪丰
	 * @创建时间:2018年4月24日 下午1:38:35
	 * @param id
	 * @param redirectAttributes
	 * @return String
	 */
	@RequestMapping(value = "delete", method = RequestMethod.POST)
	@ResponseBody
	public String delete(@RequestParam(value = "id") String id) {
		String result = "1";
		try {
			productClassifyService.delAccById(Integer.parseInt(id));
		    result = "0";
		} catch (Exception e) {
			result = "1";
			e.printStackTrace();
		}
        return result;
	}
	
	 /**
	  * @方法名称: queryProCla
	  * @功能描述: 选择商品类别tree
	  * @作者: 洪丰
	  * @创建时间: 2018年4月28日 下午2:35:52
	  * @param model
	  * @return String
	  */
    @RequestMapping("/queryProCla")
    public String queryProCla(Model model) {
        List<Map<String, Object>> jsonArray = productClassifyService.queryProClaTree();
        model.addAttribute("json", JSONArray.toJSON(jsonArray));
        return "core/productClassify/ProductClassifyTree";
    }
}
